//题号：五、5
#include <iostream>
#include <stack>
using namespace std;
int N;
int **A;
void searchG(int **A,int N){
    int visited[N];
    for(int i=0;i<N;i++){
        visited[i]=0;
    }
    int unvisited=0;//编号
    stack<int> path;
    while (unvisited!=-1){
        path.push(unvisited);
        visited[unvisited]=1;
        while (!path.empty()){
            int index=path.top();
            int next=-1;
            for (int i=0;i<N;i++){
                //当前节点和下一节点有连接，且下一节点未访问，则访问
                if (A[index][i]==1&&!visited[i]){
                    next=i;
                    break;
                }
            }
            if (next!=-1){
                path.push(next);
                visited[next]=1;
                printf("%d\n",next);//访问该节点
            }
            else{
                path.pop();//当前节点没有可以访问的其他节点了
            }
        }
        unvisited=-1;
        //寻找该图中是否有非联通的部分
        for (int i=0;i<N;i++){
            if (!visited[i]){
                unvisited=i;
                break;
            }
        }
    }
    return;
}